package org.dromara.system.domain.protocol;

import lombok.experimental.UtilityClass;

import java.util.HashMap;
import java.util.Map;
import java.util.ArrayList;
import java.util.List;

@UtilityClass
public class FaultCodeTranslator {

    // 定义故障代码和对应的描述
    private static final Map<String, String> faultCodes = new HashMap<>();

    static {
        faultCodes.put("0", "正常");
        faultCodes.put("1", "话路故障");
        faultCodes.put("2", "电池欠压");
        faultCodes.put("3", "开门报警");
        faultCodes.put("4", "通讯故障");
        faultCodes.put("5", "麦克风故障");
        faultCodes.put("6", "扬声器故障");
        faultCodes.put("7", "功放故障");
        faultCodes.put("9", "其它故障");
    }

    /**
     * 根据故障代码生成对应的故障描述
     *
     * @param faultCode 故障代码（例如："23"）
     * @return 返回对应的故障描述（例如："电池欠压，开门报警"）
     */
    public static String getFaultDescription(String faultCode) {
        // 用来存储对应的故障描述
        List<String> descriptions = new ArrayList<>();

        // 遍历输入的故障代码，获取每个故障的描述
        for (int i = 0; i < faultCode.length(); i++) {
            String code = String.valueOf(faultCode.charAt(i));
            if (faultCodes.containsKey(code)) {
                descriptions.add(faultCodes.get(code));
            }
        }

        // 如果描述列表不为空，返回拼接的描述，否则返回"无故障"
        return descriptions.isEmpty() ? "无故障" : String.join("，", descriptions);
    }

}
